package com.wicket.okrcomponent.integration.dto;



import com.wicket.okrcomponent.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;


/**
 * @desc ConfClassItemDto
 * @使用场景
 */
@Data
public class ConfClassItemDto extends BaseDto implements Serializable {

    /**
     * 分组配置项ID:
     */
    @ApiModelProperty("分组配置项ID")
    private String classConfItem;

    /**
     * 配置项ID:
     */
    @ApiModelProperty("配置项ID")
    private String confItemId;

    /**
     * 配置项标识:
     */
    @ApiModelProperty("配置项标识")
    private String confItemCode;

    /**
     * 配置项简称:
     */
    @ApiModelProperty("配置项简称")
    private String shortName;

    /**
     * 选项类型:
     */
    @ApiModelProperty("选项类型")
    private String confItemCategory;

    /**
     * 是否开关:
     */
    @ApiModelProperty("是否开关")
    private String isSwitch;

    /**
     * 是否用户可见:
     */
    @ApiModelProperty("是否用户可见")
    private String isVisible;

    /**
     * 是否开启自定义配置:
     */
    @ApiModelProperty("是否开启自定义配置")
    private String isOpenCustomConf;

    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 所属配置项分组ID:
     */
    @NotNull(message = "所属配置项分组ID不能为空")
    @ApiModelProperty("所属配置项分组ID")
    private String confItemClassId;
    /**
     * 所属配置项分组标识:
     */
    @NotNull(message = "所属配置项分组标识不能为空")
    @ApiModelProperty("所属配置项分组标识")
    private String confItemClassCode;
    /**
     * 所属配置方案ID:
     */
    @NotNull(message = "所属配置方案ID不能为空")
    @ApiModelProperty("所属配置方案ID")
    private String confSchemeId;
    /**
     * 所属配置方案标识:
     */
    @NotNull(message = "所属配置方案标识不能为空")
    @ApiModelProperty("所属配置方案标识")
    private String confSchemeCode;
    /**
     * 是否单一结果
     */
    @ApiModelProperty("是否单一结果")
    private String isSingleResult;
/**
     * 结果是否允许二次设置 TRUE:是 FALSE:否
     */
    @ApiModelProperty("结果是否允许二次设置")
    private String	 isAllowUpdateAnswer;
/**
     * 分组配置项ID 
     */
    @ApiModelProperty("分组配置项ID")
    private String	 classConfItemId;
/**
     * 生命周期状态 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("生命周期状态")
    private String	 subjectLifeCycle;

    @Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      ConfClassItemDto that = (ConfClassItemDto) o;
      return  classConfItem == that.classConfItem&&confItemId == that.confItemId&&confItemCode == that.confItemCode&&shortName == that.shortName&&confItemCategory == that.confItemCategory&&isSwitch == that.isSwitch&&isVisible == that.isVisible&&isOpenCustomConf == that.isOpenCustomConf&&orderNumber == that.orderNumber&&confItemClassId == that.confItemClassId&&confItemClassCode == that.confItemClassCode&&confSchemeId == that.confSchemeId&&confSchemeCode == that.confSchemeCode&&isSingleResult == that.isSingleResult&&isAllowUpdateAnswer == that.isAllowUpdateAnswer&&classConfItemId == that.classConfItemId&&subjectLifeCycle == that.subjectLifeCycle;
    }

    @Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), classConfItem,confItemId,confItemCode,shortName,confItemCategory,isSwitch,isVisible,isOpenCustomConf,orderNumber,confItemClassId,confItemClassCode,confSchemeId,confSchemeCode,isSingleResult,isAllowUpdateAnswer,classConfItemId,subjectLifeCycle);
    }

}
